require 'singleton'
require 'controller/poller_exception'
require 'controller/bool'
require 'model/eleicao_dao'

class EleicaoBo
  include Singleton

  def initialize
    self
  end

  def save( presidente )
    if EleicaoDao.instance.find_ultima_eleicao == nil
      puts presidente.titulo
      if (EleitorDao.instance.find? presidente.titulo)
        return EleicaoDao.instance.save(presidente)
      else
        return PollerException.instance.throw(nil, "[BO] Titulo de Presidente da Seção não foi encontrado.")
      end
    end
    
    unless EleicaoDao.instance.fim_eleicao? == nil
      # cria uma nova eleicao.
      if (EleitorDao.instance.find? presidente.titulo)
        EleicaoDao.instance.save(presidente)
      else
        return PollerException.instance.throw(nil, "[BO] Titulo de Presidente da Seção não foi encontrado.")
      end
      
    else
      # eleicao em andamento. Necessário finalizar primeiro.
      return PollerException.instance.throw(nil, "[BO] Eleição em andamento.")
    end
  end
end
